// API管理相关函数 - 第2部分

// 编辑API
function editApi(apiId) {
    $.ajax({
        url: `/api/${apiId}`,
        method: 'GET',
        success: function(response) {
        if (response.success) {
            const api = response.api;
            
            // 重置表单
            $('#add-edit-form')[0].reset();
            
            // 设置表单模式
            $('#add-edit-form').data('mode', 'edit');
            $('#add-edit-form').data('id', api.id);
            $('#addEditModalLabel').text('编辑API');
            
            // 填充表单
            $('#api-name').val(api.name);
            $('#api-method').val(api.method);
            $('#api-path').val(api.path);
            $('#api-tags').val(Array.isArray(api.tags) ? api.tags.join(',') : '');
            $('#api-description').val(api.description);
            
            // 请求头
            if (api.headers) {
                $('#api-headers').val(JSON.stringify(api.headers, null, 2));
            }
            
            // 请求参数
            if (api.params) {
                $('#api-params').val(JSON.stringify(api.params, null, 2));
            }
            
            // 请求体
            if (api.body) {
                $('#api-body').val(JSON.stringify(api.body, null, 2));
            }
            
            // 更新请求体可见性
            updateRequestBodyVisibility();
            
            // 显示模态框
            $('#addEditModal').modal('show');
        } else {
            showToast('error', response.message || '获取API详情失败');
        }
        },
        error: function(error) {
        console.error('获取API详情失败:', error);
        showToast('error', '获取API详情失败');
        }
    });
}

// 查看API
function viewApi(apiId) {
    $.ajax({
        url: `/api/${apiId}`,
        method: 'GET',
        success: function(response) {
        if (response.success) {
            const api = response.api;
            
            // 填充API详情
            $('#view-api-name').text(api.name);
            $('#view-api-method').html(`<span class="badge ${getMethodBadgeClass(api.method)}">${api.method}</span>`);
            $('#view-api-path').text(api.path);
            $('#view-api-tags').text(Array.isArray(api.tags) && api.tags.length > 0 ? api.tags.join(', ') : '-');
            $('#view-api-description').text(api.description || '-');
            $('#view-api-created-at').text(api.created_at);
            $('#view-api-updated-at').text(api.updated_at);
            
            // 请求头
            if (api.headers && Object.keys(api.headers).length > 0) {
                $('#view-api-headers').html(renderJsonViewer(api.headers));
            } else {
                $('#view-api-headers').html('<div class="text-muted">无</div>');
            }
            
            // 请求参数
            if (api.params && Object.keys(api.params).length > 0) {
                $('#view-api-params').html(renderJsonViewer(api.params));
            } else {
                $('#view-api-params').html('<div class="text-muted">无</div>');
            }
            
            // 请求体
            if (api.body && Object.keys(api.body).length > 0) {
                $('#view-api-body').html(renderJsonViewer(api.body));
            } else {
                $('#view-api-body').html('<div class="text-muted">无</div>');
            }
            
            // 显示模态框
            $('#viewModal').modal('show');
        } else {
            showToast('error', response.message || '获取API详情失败');
        }
        },
        error: function(error) {
        console.error('获取API详情失败:', error);
        showToast('error', '获取API详情失败');
        }
    });
}

// 获取请求方法对应的徽章类
function getMethodBadgeClass(method) {
    const methodBadgeClass = {
        'GET': 'bg-success',
        'POST': 'bg-primary',
        'PUT': 'bg-warning',
        'DELETE': 'bg-danger',
        'PATCH': 'bg-info'
    };
    
    return methodBadgeClass[method] || 'bg-secondary';
}

// 渲染JSON查看器
function renderJsonViewer(json) {
    const container = $('<div class="json-viewer"></div>');
    const jsonViewer = new JSONViewer();
    container.append(jsonViewer.getContainer());
    
    // 使用setTimeout确保DOM已经渲染
    setTimeout(() => {
        jsonViewer.showJSON(json);
    }, 0);
    
    return container.prop('outerHTML');
}

// 更新请求体可见性
function updateRequestBodyVisibility() {
    const method = $('#api-method').val();
    
    if (method === 'GET' || method === 'DELETE') {
        $('.api-body-group').hide();
    } else {
        $('.api-body-group').show();
    }
}